package com.kun.framework.queue.producer;

import com.kun.framework.core.config.BeanInstance;
import com.kun.framework.queue.core.enums.QueueKeyEnum;

/**
 * 生产者接口
 *
 * @author gzc
 * @since 2024/8/24
 **/
public interface KunProducer<V> extends BeanInstance {
    /**
     * 绑定队列
     *
     * @param queueKeyEnum 队列主键枚举
     */
    void bindQueue(QueueKeyEnum queueKeyEnum);

    /**
     * 获取绑定队列主键枚举
     *
     * @return 队列主键枚举
     */
    QueueKeyEnum getBindQueueKeyEnum();

    /**
     * 发布消息
     *
     * @param message 消息
     */
    void publish(V message);

    /**
     * 异步发布消息
     *
     * @param message 消息
     */
    void asyncPublish(V message);
}
